package com.gitee.feizns.quickstart.web.ex;

import com.gitee.feizns.quickstart.domain.vo.Ret;
import org.springframework.http.ResponseEntity;

/**
 * 自定义异常处理器
 * <p>
 *     其中包含的要处理的异常还包括异常栈中的异常
 * </p>
 * @author feizns
 * @since 2019/7/7
 */
public interface ExceptionHandler<T extends Throwable> {

    /**
     * 异常处理
     * @param e 处理的具体异常实例
     * @return {@link ResponseEntity}
     */
    ResponseEntity<Ret<?>> handle(T e);

    /**
     * 表名该异常解析器，支持处理的异常类型
     * @return 返回支持的异常类型
     */
    Class<? extends Throwable>[] support();

}

